package com.example.demo.level3.homework;

import com.example.demo.level3.LearnStream;
import com.example.demo.level3.pojo.People;
import org.junit.jupiter.api.Test;

import java.math.BigDecimal;
import java.util.Collection;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class AnswerByLxt {
    /*
     * 思考题：
     * 请将list根据分数是否及格进行分组，并将分数从高到低排序，每个组保留前三名，获取他们的姓名+成绩的拼接，拼接符号为->
     * 注：不及格的人指score小于60，及格为true，不及格为false
     * 注2：打印的对象类型为 Map<Boolean, String>
     */

    /**
     * 请在 com.example.demo.level3.homework 下新建文件
     * 拷贝以下代码，进行答题
     */
    @Test
    public void question() {
        List<People> list = LearnStream.getList();
        Map<Boolean, String> collect = list.stream().collect(Collectors.groupingBy(item -> {
                    if (item.getScore().compareTo(new BigDecimal(60)) >= 0) {
                        return true;
                    } else {
                        return false;
                    }
                },
                Collectors.collectingAndThen(Collectors.toList(), v -> v.stream()
                        .sorted(Comparator.comparing(People::getScore, Comparator.reverseOrder()))
                        .limit(3)
                        .map(t -> t.getName() + "->" + t.getScore())
                        .collect(Collectors.joining(","))
                )));
        System.out.println(collect);
    }
}
